import os
import json
from PyQt5.QtWidgets import QMessageBox


class Utils:

    # 读取json文件
    def read_json(jsonPath=""):
        if not os.path.exists(jsonPath):
            return {}
        with open(jsonPath, "r", encoding="utf-8") as file:
            data = json.load(file)
        return data

    def write_json(jsonPath="", data={}):
        os.makedirs(os.path.dirname(jsonPath), exist_ok=True)
        with open(jsonPath, "w", encoding="utf-8") as f:
            json.dump(data, f, ensure_ascii=False, indent=4)

    # def getTheme():
    #     theme = "Dark"
    #     if os.path.exists(f"{path}/desktop/theme.json"):
    #         theme = json.load(open(f"{path}/desktop/theme.json", "r", encoding="utf-8"))
    #     return theme

    # def write_json_key(jsonPath="", data={}, key=""):
    #     # 确保目录存在
    #     os.makedirs(os.path.dirname(jsonPath), exist_ok=True)

    #     # 读取原有数据（如果文件不存在则初始化）
    #     originData = {}
    #     if os.path.exists(jsonPath):
    #         with open(jsonPath, "r", encoding="utf-8") as f:
    #             originData = json.load(f)

    #     # 更新指定键的值
    #     originData[key] = data

    #     # 写入更新后的数据
    #     with open(jsonPath, "w", encoding="utf-8") as f:
    #         json.dump(originData, f, ensure_ascii=False, indent=4)

    # def update_json_list(jsonPath="", new_data=None, key="", remove_key="", remove_value=""):
    #     """
    #     更新 JSON 文件中的列表数据：
    #     1. 删除列表中 `type` 为 `remove_type` 的对象。
    #     2. 添加 `new_data` 到列表。
    #     3. 写入更新后的数据到 JSON 文件。

    #     Args:
    #         jsonPath (str): JSON 文件路径。
    #         new_data (dict): 要添加的新数据（如果是 None，则不添加）。
    #         remove_type (str): 要删除的 `type` 值（默认 "Honeycomb"）。
    #     """
    #     # 确保目录存在
    #     os.makedirs(os.path.dirname(jsonPath), exist_ok=True)

    #     # 读取原有数据（如果文件不存在则初始化为空列表）
    #     data_list = []
    #     if os.path.exists(jsonPath):
    #         with open(jsonPath, "r", encoding="utf-8") as f:
    #             originData = json.load(f)
    #             # data_list = json.load(f)
    #     data_list = originData.get(key)
    #     # 1. 删除 `type` 为 `remove_type` 的对象
    #     data_list = [item for item in data_list if item.get(remove_key) != remove_value]

    #     # 2. 添加新数据（如果提供了 new_data）
    #     if new_data is not None:
    #         data_list.append(new_data)

    #     # 3. 写入更新后的数据
    #     with open(jsonPath, "w", encoding="utf-8") as f:
    #         json.dump(data_list, f, ensure_ascii=False, indent=4)

    def manageLocalTable(table, path):
        data = []
        for i in range(table.rowCount()):
            row_data = []
            for j in range(table.columnCount()):
                item = table.item(i, j)
                if item is not None:
                    row_data.append(item.text())
                else:
                    row_data.append("")  # 空单元格处理
            data.append(row_data)
        json_data = json.dumps(data, indent=4)
        os.makedirs(os.path.dirname(path), exist_ok=True)
        with open(path, "w", encoding="utf-8") as f:
            f.write(json_data)
